// 获取图片分类列表请求参数
export interface GetImageCategorysRequest {
  gen_type?: AIType;
}

// AI图片分类相关类型
export interface ImageCategoryVO {
  uid: number;
  template_id: number;
  type: number;
  name: string;
  desc: string;
  img: string;
  gen_type: number;
}

// 获取模型Prompt请求参数
export interface GetCategoryPromptRequest {
  template_id: number;
}

// 获取模型Prompt响应
export interface CategoryPromptResponse {
  prompt: string;
}

// 触发生成任务请求参数
export interface GenerateRequest {
  uid?: number;
  gen_type: number;
  template_id: number;
  prompt_text: string;
  img?: string;
}

// 触发生成任务响应
export interface GenerateResponse {
  taskId?: string;
}

// 查询生成结果请求参数
export interface GetGenerateResultRequest {
  template_id?: string | number;
  prompt_text?: string;
  gen_type: number;
  aid?: string;
}

// 生成结果数据结构
export interface GenerateResultVO {
  uid: string;
  gen_template: {
    desc: string;
    gen_type: number;
    name: string;
    owner_uid: number;
    prompt_meta: string;
    template_id: string;
  };
  img: string;
  result_imgs?: {
    img_id: number;
    img_url: string;
  }[];
  prompt_text: string;
  task_id: string;
  status: number;
  created_at: string;
  updated_at: string;
}

// 查询AI生成任务结果请求参数
export interface GetGenerateTaskDetailRequest {
  task_id: string;
}

// 查询生成历史请求参数
export interface GetGenerateTaskHistoryRequest {
  gen_type: number;
  start: number;
  size: number;
}

// 生成历史列表响应
export interface GenerateResultListVO {
  results: GenerateResultVO[];
  next_start: number;
  has_more: boolean;
  // 可以根据实际响应结构添加其他字段
}

// 删除历史图片请求参数
export interface DeleteImgRequest {
  tasks: {
    task_id: string;
    img_ids: number[];
  }[];
}

// 获取进行中任务请求参数
export interface GetInProgressTasksRequest {
  product_type: number; // 1-文生图/图生图 2-产品定制
}

// 进行中任务列表响应

// 定义类型枚举
export enum AIType {
  ALL = 0, // 文本生成
  TEXT = 1, // 文本生成
  IMAGE = 2, // 图片生成
  EDIT = 3, // 图片编辑
  HD = 4, // 高清图
}

export enum TaskType {
  PROCESSING = 1, // 进行中
  SUCCESS = 2, // 成功
  FAIL = 3, // 失败
}

// 埋点相关
// 类型
export enum GenerateType {
  ALL = 'text2image',
  TEXT = 'text2image',
  IMAGE = 'image2image',
  EDIT = 'imageEdit',
  HD = 'upscale',
}

//失败理由: logout（用户未登录）maxTask（达到生成上限）limitPrompt（提示词中含有违禁词）
export enum FailReason {
  LOGOUT = 'logout',
  MAX_TASK = 'maxTask',
  LIMIT_PROMPT = 'limitPrompt',
}

// 生成状态码 -> 失败原因 映射
export const GreateCodeResponse: Record<string, FailReason> = {
  '100201': FailReason.MAX_TASK,
  '401': FailReason.LOGOUT,
};
